#include <stdio.h>
#include <stdlib.h>
#include "linklist.h"
void and(link_node_t *lista, link_node_t *listb) {
    link_node_t *listc = NULL;
    link_node_t *anext = lista;
    link_node_t *bnext = listb->next;

    // 创建一个新的链表头节点
    listc = (link_node_t *)malloc(sizeof(link_node_t));
    listc->next = NULL;

    // 指向新链表的当前节点
    link_node_t *current = listc;

    while (anext != NULL && bnext != NULL) {
        if (anext->data <= bnext->data) {
            current->next = anext;
            current = anext;
            anext = anext->next;
        } 
        else {
            current->next = bnext;
            current = bnext;
            bnext = bnext->next;
        }
    }

    // 将剩余的节点连接到新链表上
    if (anext != NULL) {
        current->next = anext;
    } 
    else {
        current->next = bnext;
    }

    // 显示合并后的链表
    ShowLinkList(listc->next);

    ClearLinkList(listc);
    // 释放链表的头节点
    free(listc);
    listc=NULL;
    
}






int main(void){
//链表A
    link_node_t *lista = CreateEpLinkList();
    if (lista == NULL){
        printf("链表创建失败！\n");
        return 1;
    }
    InsertIntoPostLinkList(lista,0,1);
    InsertIntoPostLinkList(lista,1,3);
    InsertIntoPostLinkList(lista,2,5);
    InsertIntoPostLinkList(lista,3,7);
    InsertIntoPostLinkList(lista,4,9);
    InsertIntoPostLinkList(lista,5,10);
//链表B
    link_node_t *listb = CreateEpLinkList();
    if (listb == NULL){
        printf("链表创建失败！\n");
        return 1;
    }
    InsertIntoPostLinkList(listb,0,2);
    InsertIntoPostLinkList(listb,1,4);
    InsertIntoPostLinkList(listb,2,5);
    InsertIntoPostLinkList(listb,3,8);
    InsertIntoPostLinkList(listb,4,11);
    InsertIntoPostLinkList(listb,5,15);
//合并
    and(lista,listb);


    free(listb);
    free(lista);

    listb=NULL;
    lista=NULL;

    return 0;
}